package com.scalar.chiptrack.finance.creditNote.actionCommands;

import com.scalar.chiptrack.actioncommands.ActionCommand;
import com.scalar.chiptrack.users.User;
import com.scalar.chiptrack.commons.SessionKeys;
import com.scalar.chiptrack.finance.creditNote.forms.CreditNoteForm;
import com.scalar.chiptrack.finance.creditNote.dao.CreditNoteDAO;
import com.scalar.chiptrack.sales.LineItem;
import com.scalar.ScalarException;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.ArrayList;

/**
 * User: Sujan
 * Date: Apr 30, 2007
 * Time: 4:38:06 PM
 */
public class CreditNoteApproveCommand extends ActionCommand {
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
    {
        HttpSession session  = request.getSession();

        User user            = (User) session.getAttribute ( SessionKeys.USER_KEY );

        CreditNoteForm creditNoteForm = ( CreditNoteForm ) form;

        HashMap errors = ( HashMap )request.getAttribute( SessionKeys.ERROR_MESSAGES );
        HashMap info = ( HashMap )request.getAttribute( SessionKeys.INFO_MESSAGES );
        try
        {
            if( creditNoteForm.getCreditNoteId() > 0 )
            {
                CreditNoteDAO.loadCreditNote(null, creditNoteForm);
                ArrayList lineItems = creditNoteForm.getLineItems();
                ArrayList holdLineItems = new ArrayList();
                int size = lineItems.size();
                for ( int i=0; i < size; i++ )
                {
                    LineItem lineItem = (LineItem)lineItems.get ( i );
                    if ( "HOLD".equalsIgnoreCase( lineItem.getStatus() ) )
                    {
                        holdLineItems.add( lineItem );
                    }
                }
                creditNoteForm.setLineItems( holdLineItems );
            }
        }
        catch ( ScalarException e )
        {
            e.printStackTrace();
            errors.put ( "Could not Load Credit Note to approve", null );
        }
            return mapping.findForward ( "creditNoteApprove" );
    }
}
